// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可
// 抽取公共部分
 //-----------------基地址---------------------
 axios.defaults.baseURL = 'http://ajax-api.itheima.net'

 //  1.轻提示   +   抽取
 function tip(msg) {
   //  变量存到function内部
   // 1.1保存dom元素
   const toastDom = document.querySelector('#myToast')
  //  console.log('toastDom:',toastDom);
   // 1.2 创建toast对象  轻提示
   const toast = new bootstrap.Toast(toastDom)
   //  1.3需要提示信息
   document.querySelector('.toast-body').innerHTML = msg
   // 弹出
   toast.show()
 }
//  tip('提示信息')


//------------设置用户名----------------------

// 取用户名
const username = localStorage.getItem('username')
  //  document.querySelector('#navbar-main .font-weight-bold').innerHTML = username
 const nameSpan = document.querySelector('#navbar-main .font-weight-bold')
  // 判断是否存在span
// if (nameSpan) {
//   nameSpan.innerHTML = username
// }
nameSpan && (nameSpan.innerHTML = username)


//-------------用户登出（退出）-----------------------
const logoutBtn = document.querySelector('#logout')
//  逻辑短路
   /*
     表达式1  && 表达式2
       表达式1的值为false   表达式2不解析
       表达式1的值为true  表达式2才会解析
   
   */

logoutBtn &&
 ( logoutBtn.onclick = function () {
    //  删除用户信息   token
  localStorage.removeItem('username')
  localStorage.removeItem('token')
  // 去登录页
  window.location.href = './login.html'
})





 //------------添加 axios 请求拦截器---------------------
// 请求发送之前  执行回调函数
//添加请求拦截器
// interceptors  拦截器   
axios.interceptors.request.use(
  function (config) {
    // console.log('请求拦截器中的逻辑执行啦!')
    // console.log('config:', config)
    // 获取到本次请求的设置 设置修改,比如修改请求头
    // config.headers.food = 'westblueflower'
    config.headers. Authorization= localStorage.getItem('usertoken')
  
    // 可以不可以把token的携带 也写在这里呢?
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)


// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // console.log('响应拦截器-成功部分的逻辑')
    console.log('response:', response)
    // 人为的将 axios 包裹到数据上的 data属性 点掉
    // 页面中 就不需要点2次data
   
    // 返回response.data
    // 页面中拿到的res  是这里的返回值
    return response.data
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    //400 401 422 409 500
    console.log('响应拦截器-异常部分的逻辑')
    // 只要服务器返回的 http状态码是错误 就会执行到这里
    // 可以在这里对于请求的异常 统一判断,比如 token有问题
    // 对响应错误做点什么
      // 401异常捕获
    if (error.response.status === 401) {
      localStorage.removeItem('usertoken')
      localStorage.removeItem('uasename')
      // 去登录页面
      window.location.href = './login.html'

    }


    return Promise.reject(error)
  }
)